package br.com.dallasmotopecas.venda.abc.managerbean;

import java.io.Serializable;

import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;

import br.com.dallasmotopecas.comum.cliente.controller.ClienteAbcController;
import br.com.dallasmotopecas.comum.cliente.vo.ClienteAbcVo;
import br.com.dallasmotopecas.util.exception.AlterarObjetoException;
import br.com.dallasmotopecas.util.exception.CampoObrigatorioException;
import br.com.dallasmotopecas.util.exception.ClasseNaoEncontradaException;
import br.com.dallasmotopecas.util.exception.ConexaoException;
import br.com.dallasmotopecas.util.exception.ConsultarObjetoException;
import br.com.dallasmotopecas.util.exception.DirecionamentoPaginaException;
import br.com.dallasmotopecas.util.managerbean.AbstractManagerBean;

@ManagedBean(name="curvaAbcManagerBean")
@ViewScoped
public class CurvaAbcManagerBean extends AbstractManagerBean implements Serializable
{
	private static final long serialVersionUID = 1L;
	private ClienteAbcVo clienteAbcVo;
	
	public CurvaAbcManagerBean()
	{
		
	}
	
	@PostConstruct
	public void init()
	{
		iniciarCurvaABC();
	}
	
	@PreDestroy
	public void destroy()
	{
		
	}

	public ClienteAbcVo getClienteAbcVo()
	{
		if (clienteAbcVo == null) clienteAbcVo = new ClienteAbcVo();
		return clienteAbcVo;
	}

	public void setClienteAbcVo(ClienteAbcVo clienteAbcVo)
	{
		this.clienteAbcVo = clienteAbcVo;
	}
	
	private void iniciarCurvaABC()
	{
		ClienteAbcController clienteAbcController = null;
		try
		{
			clienteAbcController = new ClienteAbcController(getContexto());
			clienteAbcController.consultarClienteAbc(getClienteAbcVo());
		}
		catch (ClasseNaoEncontradaException e)
		{
			e.printStackTrace();
			processarMensagem(MENSAGEM_FATAL, e.getMessage());
		}
		catch (ConexaoException e)
		{
			e.printStackTrace();
			processarMensagem(MENSAGEM_FATAL, e.getMessage());
		}
		catch (ConsultarObjetoException e)
		{
			e.printStackTrace();
			processarMensagem(MENSAGEM_FATAL, e.getMessage());
		}
		finally
		{
			if (clienteAbcController != null)
			{
				clienteAbcController.close();
				clienteAbcController = null;
			}
		}
	}
	
	public void gravar()
	{
		ClienteAbcController clienteAbcController = null;
		try
		{
			clienteAbcController = new ClienteAbcController(getContexto());
			clienteAbcController.alterarClienteAbc(getClienteAbcVo());
			processarMensagem(MENSAGEM_INFORMATIVA, "Registro Gravado com Sucesso");
		}
		catch (ClasseNaoEncontradaException e)
		{
			e.printStackTrace();
			processarMensagem(MENSAGEM_FATAL, e.getMessage());
		}
		catch (ConexaoException e)
		{
			e.printStackTrace();
			processarMensagem(MENSAGEM_FATAL, e.getMessage());
		}
		catch (CampoObrigatorioException e)
		{	
			processarMensagem(MENSAGEM_INFORMATIVA, e.getMessage());
		}
		catch (AlterarObjetoException e)
		{
			e.printStackTrace();
			processarMensagem(MENSAGEM_FATAL, e.getMessage());
		}
		finally
		{
			if (clienteAbcController != null)
			{
				clienteAbcController.close();
				clienteAbcController = null;
			}
		}
	}
	
	public void sair()
	{
		try
		{
			redirecionarPagina("/view/venda/Home.jsf");
		}
		catch (DirecionamentoPaginaException e)
		{	
			e.printStackTrace();
		}
	}
}
